/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.comp.manager;

import com.brain.comp.dto.ComprobanteCompraDto;
import com.brain.comp.dto.DocumentoCompraDto;
import com.brain.comp.dto.PlanPagoDto;
import com.brain.comp.view.util.ConstantesComp;
import com.brain.conf.dto.TipoCambioDto;
import com.brain.conf.manager.TipoCambioManager;
import com.brain.core.common.ExportarExcelCaja;
import com.brain.core.manager.*;
import com.brain.core.common.UtilCore;
import com.brain.core.configuracion.WebServletContextListener;
import com.brain.core.dto.FechaFiltroDto;
import com.brain.core.exception.DAOException;
import com.brain.core.hibernate.dao.DAOGenerico;
import com.brain.core.view.mbean.ApplicationMBean;
import com.brain.core.view.mbean.SessionMBean;
import com.brain.core.view.util.ConstantesCore;
import com.brain.fina.dto.PagoDto;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
import javax.annotation.Resource;
import javax.faces.model.SelectItem;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;

/**
 *
 * @author Indra
 */
@Service
public class PlanPagoManager extends ComunManager<PlanPagoDto> implements Serializable {
    
    private static Logger logger = Logger.getLogger(PlanPagoManager.class);
    private Long idEntidad = 175L;
    @Resource
    private DAOGenerico<PlanPagoDto> springHibernateDao;
    @Resource
    private RecursosManager recursosManager;
    private final String url = "/pages/caja/pagoDC/planPagoDC.xhtml";
    private final String urlLista = "/pages/caja/pagoDC/listaPlanPagoDC.xhtml";

    /**
     * obtener Plan de Pago por Id
     *
     * @param id ID de Plan de Pago
     * @return Plan de Pago
     * @throws DAOException
     */
    public PlanPagoDto obtenerPorId(Long id) throws DAOException {
        return springHibernateDao.obtenerDtoPorId(PlanPagoDto.class, id);
    }

    /**
     * Metodo para inicializar un nuevo Plan de Pago
     *
     * @return
     */
    
    public List<PlanPagoDto> obtenerDocumentosXPagar(PlanPagoDto dto, FechaFiltroDto dtoFecha) throws DAOException{
        SessionMBean sessionMBean = (SessionMBean) WebServletContextListener.getApplicationContext().getBean("sessionMBean");
        List<Object> listaParametros = new ArrayList<Object>();           
        
        String query = "select dto from PlanPagoDto as dto where dto.organizacionDto.id = ?";
        listaParametros.add(sessionMBean.getOrganizacionDto().getId());
        if (dto.getId() != null && !dto.getId().equals(0L)){
            query += " and dto.id = ?";
            listaParametros.add(dto.getId());
        }
        else{
            if (dto.getEstado() != null && !dto.getEstado().equals(ConstantesComp.ValoresConstantes.PLAN_PAGO_COD_ESTADO_TODOS)){
                query += " and dto.estado = ?";
                listaParametros.add(dto.getEstado());
            }
            
            if (dto.getTipoDocumento() != null && !dto.getTipoDocumento().equals(ConstantesComp.ValoresConstantes.TIPO_DOC_COD_TODOS)){
                query += " and dto.tipoDocumento = ?";
                listaParametros.add(dto.getTipoDocumento());
            }
            
            if (dtoFecha.getFechaInicio() != null && dtoFecha.getFechaFin() != null){
                if (listaParametros.size() > 0){
                    query += " and dto.fechaVencimiento between ? and ?";
                }
                else{
                    query += " where dto.fechaVencimiento betwenn ? and ?";
                }
                Calendar c = Calendar.getInstance();
                c.setTime(dtoFecha.getFechaInicio());
                c.set(Calendar.HOUR, 0);
                c.set(Calendar.MINUTE,0);
                c.set(Calendar.SECOND,0);
                listaParametros.add(c.getTime());
                c.setTime(dtoFecha.getFechaFin());
                c.set(Calendar.HOUR, 23);
                c.set(Calendar.MINUTE,59);
                c.set(Calendar.SECOND,59);
                listaParametros.add(c.getTime());
            }
        }
        query += " order by dto.fechaVencimiento desc";
        System.out.println(query);
        return springHibernateDao.ejecutarQuery(query, listaParametros);
    }
    
    
    
    public PlanPagoDto inicializar() {
        SessionMBean sessionMBean = (SessionMBean) WebServletContextListener.getApplicationContext().getBean("sessionMBean");
        PlanPagoDto dto = new PlanPagoDto();
        dto.setLiquidar(BigDecimal.ZERO);
        dto.setPagado(BigDecimal.ZERO);
        dto.setPendiente(BigDecimal.ZERO);
        dto.setUltimoPagoDto(null);
        dto.setNumeroPago(1);
        dto.setIsSave(Boolean.TRUE);
        dto.setEstado(ConstantesComp.ValoresConstantes.PLAN_PAGO_COD_ESTADO_PENDIENTE);
        return dto;
    }

    /**
     * Metodo para guardar, editar Plan de Pago
     *
     * @param dto Plan de Pago
     * @return cadena de satisfaccion
     */
    public String guardar(PlanPagoDto dto) {
        
        String to = null;
        String mensajeTrx = "";
        SessionMBean sessionMBean = (SessionMBean) WebServletContextListener.getApplicationContext().getBean("sessionMBean");
        ApplicationMBean applicationMBean = (ApplicationMBean) WebServletContextListener.getApplicationContext().getBean("applicationMBean");
        
        dto = asignarOrigen(dto);
        
        try {
            if (dto.getIsSave()) {
                {
                    dto.setUsuarioDto(sessionMBean.getSessionUsuarioDto());
                    dto.setFecha(UtilCore.Fecha.obtenerFechaActualDate());
                    dto.setTerminal(sessionMBean.getSessionTerminal());
                }
                
                if (sessionMBean.getAccionDetalle() == applicationMBean.getNuevo()) {
                    dto.setUsuarioCreacionDto(sessionMBean.getSessionUsuarioDto());
                    dto.setFechaCreacion(UtilCore.Fecha.obtenerFechaActualDate());
                    dto.setTerminalCreacion(sessionMBean.getSessionTerminal());
                    dto.setOrganizacionDto(sessionMBean.getOrganizacionDto());
                    UtilCore.General.toUpperCaseDto(dto);
                    dto.setPendiente(dto.getLiquidar());
                    definirCssPorEstado(dto);
                    nuevo(dto);
                    mensajeTrx = UtilCore.Internacionalizacion.getMensajeInternacional("form.general.mensaje.transaccion.ok");
                    recursosManager.showMessage(mensajeTrx);
                    to = "";//retroceder();
                } else if (sessionMBean.getAccionDetalle() == applicationMBean.getEditar()) {
                    UtilCore.General.toUpperCaseDto(dto);
                    editar(dto);
                    mensajeTrx = UtilCore.Internacionalizacion.getMensajeInternacional("form.general.mensaje.transaccion.ok");
                    recursosManager.showMessage(mensajeTrx);
                    to = "";//retroceder();
                }
            } else {
                recursosManager.showError(UtilCore.Internacionalizacion.getMensajeInternacional("plan.pago.mensaje.issave.false"));                
            }
        } catch (Exception ex) {
            mensajeTrx = ex.getMessage();
            recursosManager.showError(ex.getMessage());
            logger.error(mensajeTrx);
            
            to = null;
        }
        return to;
    }
    
    public PlanPagoDto asignarOrigen(PlanPagoDto planPagoDto){
        if (planPagoDto.getDocumentoCompraDto() != null){
            planPagoDto.setTipoDocumento(ConstantesComp.ValoresConstantes.TIPO_DOC_COD_DOCUMENTO_COMPRA);
        }
        else {
            planPagoDto.setTipoDocumento(ConstantesComp.ValoresConstantes.TIPO_DOC_COD_COMPROBANTE_COMPRA);
        }
        return planPagoDto;
    }
    
    public BigDecimal obtenerSumaMontosALiquidar(DocumentoCompraDto dto, PlanPagoDto planPagoDto) throws DAOException {
        List<Object> listaParametros = new ArrayList<Object>();
        String hqsql = "select sum(e.liquidar) from PlanPagoDto as e ";
        hqsql += " where e.documentoCompraDto.id = ?";
        listaParametros.add(dto.getId());
        if (planPagoDto.getId() != null) {
            hqsql += " and e.id <> ?";            
            listaParametros.add(planPagoDto.getId());
        }
        return (BigDecimal) (springHibernateDao.ejecutarQueryGeneric(hqsql, listaParametros).get(0));
    }
    
    public BigDecimal obtenerSumaMontosALiquidar(ComprobanteCompraDto dto, PlanPagoDto planPagoDto) throws DAOException {
        List<Object> listaParametros = new ArrayList<Object>();
        String hqsql = "select sum(e.liquidar) from PlanPagoDto as e ";
        hqsql += " where e.comprobanteCompraDto.id = ?";
        listaParametros.add(dto.getId());
         if (planPagoDto.getId() != null) {
            hqsql += " and e.id <> ?";
            listaParametros.add(planPagoDto.getId());
        }
        return (BigDecimal) (springHibernateDao.ejecutarQueryGeneric(hqsql, listaParametros).get(0));
    }
    
    public SelectItem[] siTiposPlanPagoTodos(){
        SelectItem[] si = new SelectItem[3];
        si[0] = new SelectItem(ConstantesComp.ValoresConstantes.PLAN_PAGO_COD_ESTADO_TODOS, ConstantesComp.ValoresConstantes.PLAN_PAGO_DESC_ESTADO_TODOS);        
        si[1] = new SelectItem(ConstantesComp.ValoresConstantes.PLAN_PAGO_COD_ESTADO_PENDIENTE, ConstantesComp.ValoresConstantes.PLAN_PAGO_DESC_ESTADO_PENDIENTE);
        si[2] = new SelectItem(ConstantesComp.ValoresConstantes.PLAN_PAGO_COD_ESTADO_CANCELADO, ConstantesComp.ValoresConstantes.PLAN_PAGO_DESC_ESTADO_CANCELADO);        
        return si;
    }
    
    public SelectItem[] siTiposDocumentosTodos(){
        SelectItem[] si = new SelectItem[3];
        si[0] = new SelectItem(ConstantesComp.ValoresConstantes.TIPO_DOC_COD_TODOS, ConstantesComp.ValoresConstantes.TIPO_DOC_DESC_TODOS);
        si[1] = new SelectItem(ConstantesComp.ValoresConstantes.TIPO_DOC_COD_DOCUMENTO_COMPRA, ConstantesComp.ValoresConstantes.TIPO_DOC_DESC_DOCUMENTO_COMPRA);
        si[2] = new SelectItem(ConstantesComp.ValoresConstantes.TIPO_DOC_COD_COMPROBANTE_COMPRA, ConstantesComp.ValoresConstantes.TIPO_DOC_DESC_COMPROBANTE_COMPRA);
        return si;
    }
    
    public String pagar(PlanPagoDto dto){
        String to = null;
        String mensajeTrx = "";
        SessionMBean sessionMBean = (SessionMBean) WebServletContextListener.getApplicationContext().getBean("sessionMBean");
        ApplicationMBean applicationMBean = (ApplicationMBean) WebServletContextListener.getApplicationContext().getBean("applicationMBean");
                
        for(PagoDto x: dto.getListPago()){
            if (x.getEstado().equals("P")){
                x.setEstado("C");
                x.setUsuarioCancelacionDto(sessionMBean.getSessionUsuarioDto());
                x.setFechaCancelacion(UtilCore.Fecha.obtenerFechaActualDate());
            }
        }

        dto.setPagado(dto.getLiquidar());
        dto.setPendiente(BigDecimal.ZERO);
        
        try {
            dto.setEstado(ConstantesComp.ValoresConstantes.PLAN_PAGO_COD_ESTADO_CANCELADO);
            dto.setUsuarioCancelacionDto(sessionMBean.getSessionUsuarioDto());
            dto.setFechaCancelacion(UtilCore.Fecha.obtenerFechaActualDate());
            definirCssPorEstado(dto);
            UtilCore.General.toUpperCaseDto(dto);
            editar(dto);
            mensajeTrx = UtilCore.Internacionalizacion.getMensajeInternacional("form.general.mensaje.transaccion.ok");
            recursosManager.showMessage(mensajeTrx);
            to = "";
        } catch (DAOException ex) {
            mensajeTrx = ex.getMessage();
            recursosManager.showError(ex.getMessage());
            logger.error(mensajeTrx);
            to = null;
        }
        return to;
    }
    
    public String pagarPago(PlanPagoDto dto){
        String to = null;
        String mensajeTrx = "";
        if (dto.getPendiente().compareTo(BigDecimal.ZERO) == 0){   
            this.pagar(dto);
            to = null;
        }
        else{
            try {
                UtilCore.General.toUpperCaseDto(dto);
                editar(dto);
                to = "";
             } catch (DAOException e) {
                mensajeTrx = e.getMessage();
                logger.error(mensajeTrx);
                to = null;
             }
        }
        return to;
    }
    
    public void definirCssPorEstado(PlanPagoDto dto) {
        if (dto.getEstado().equals(ConstantesComp.ValoresConstantes.PLAN_PAGO_COD_ESTADO_CANCELADO)) {
            dto.setInlinestyle(ConstantesCore.cssEstados.cssConfirmado);
        } else if (dto.getEstado().equals(ConstantesComp.ValoresConstantes.PLAN_PAGO_COD_ESTADO_PENDIENTE)) {
            dto.setInlinestyle(ConstantesCore.cssEstados.cssAnulado);      
        }
    }
    
    public PagoDto unificarDatosCobroDetalle(PagoDto pDto, PlanPagoDto ppDto){
        try {
            pDto = obtenerTipoCambio(pDto, ppDto);
        } catch (Exception e) {
            recursosManager.showError(e.getMessage());
            logger.error(e.getMessage());
        }
        return pDto;
    }
    
    public PagoDto obtenerTipoCambio(PagoDto pDto, PlanPagoDto ppDto){
        TipoCambioDto tcDto = verificarMonedas(pDto, ppDto);
        if (tcDto == null){
            pDto.setFactorConversion(null);
        }
        else if (tcDto.getId().equals(-1L)){
            pDto.setFactorConversion(BigDecimal.ONE);
        }
        else {
            pDto.setFactorConversion(tcDto.getFactor());
        }
        return pDto;        
    }
    
    public TipoCambioDto verificarMonedas(PagoDto pDto, PlanPagoDto dto) {
        SessionMBean sessionMBean = (SessionMBean) WebServletContextListener.getApplicationContext().getBean("sessionMBean");
        TipoCambioManager tipoCambioManager = (TipoCambioManager) WebServletContextListener.getApplicationContext().getBean("tipoCambioManager");
        TipoCambioDto tcDto = null;
        //Verificamos si es necesario usar el tipo de cambio
        if (!pDto.getMonedaDto().getId().equals(dto.getMonedaDto().getId())) {
            tcDto = tipoCambioManager.obtenerFactorConversionProceso(pDto.getMonedaDto(), dto.getMonedaDto(), sessionMBean.getOrganizacionDto().getTcCompra(), 1);

            if (tcDto.getId() == null) {
                return null;
            }
        } else {
            tcDto = new TipoCambioDto(-1L);
        }
        return tcDto;
    }
    
    public void generarExcelSeleccionados(ExportarExcelCaja.PlanPago exp, PlanPagoDto[] selectedPPs) {
        StringBuilder strCabecera = this.obtenerCabeceraExcel(exp);
        List<PlanPagoDto> lst = Arrays.asList(selectedPPs);
        List lstCuerpo = this.obtenerCuerpoExcel(exp, lst);
        String nombreArchivo = "PLANES_PAGO_" + UtilCore.Fecha.obtenerFechaHoraActual().replace(':', '_') + ".xls";
        this.recursosManager.generarExcel(strCabecera.toString(), lstCuerpo, nombreArchivo);
        this.recursosManager.viewArchivo(nombreArchivo);
    }
    
    public void generarExcelPorTabla(ExportarExcelCaja.PlanPago exp, List<PlanPagoDto> lstPP) {
        StringBuilder strCabecera = this.obtenerCabeceraExcel(exp);
        List lstCuerpo = this.obtenerCuerpoExcel(exp, lstPP);
        String nombreArchivo = "PLANES_PAGO_" + UtilCore.Fecha.obtenerFechaHoraActual().replace(':', '_') + ".xls";
        this.recursosManager.generarExcel(strCabecera.toString(), lstCuerpo, nombreArchivo);
        this.recursosManager.viewArchivo(nombreArchivo);
    }
    
    private List obtenerCuerpoExcel(ExportarExcelCaja.PlanPago exp, List<PlanPagoDto> lst) {
        StringBuilder strCuerpo;
        List lstFilas = new ArrayList();
        for (PlanPagoDto x : lst) {
            strCuerpo = new StringBuilder();
            if (exp.getId()) {
                strCuerpo.append(x.getId()).append("|");
            }
            if (exp.getFechaVencimiento()){
                if (x.getFechaVencimiento() != null){
                    strCuerpo.append(x.getFechaVencimiento()).append("|");
                }
                else {
                    strCuerpo.append("-").append("|");
                }
            }
            if (exp.getFormaPago()){
                if (x.getFormaPagoDto() != null){
                    strCuerpo.append(x.getFormaPagoDto().getDescripcion()).append("|");
                }
                else {
                    strCuerpo.append("-").append("|");
                }
            }
            if (exp.getaLiquidar()){
                if (x.getLiquidar() != null){
                    strCuerpo.append(x.getLiquidar()).append("|");
                }
                else {
                    strCuerpo.append("-").append("|");
                }
            }
            if (exp.getPagado()){
                if (x.getPagado() != null){
                    strCuerpo.append(x.getPagado()).append("|");
                }
                else {
                    strCuerpo.append("-").append("|");
                }
            }
            if (exp.getPendiente()){
                if (x.getPendiente() != null){
                    strCuerpo.append(x.getPendiente()).append("|");
                }
                else {
                    strCuerpo.append("-").append("|");
                }
            }
            if (exp.getUltimoPago()){
                if (x.getUltimoPagoDto() != null){
                    strCuerpo.append(x.getUltimoPagoDto().getId()).append("|");
                }
                else {
                    strCuerpo.append("-").append("|");
                }
            }
            if (exp.getNumeroPago()){
                strCuerpo.append(x.getNumeroPago()).append("|");                
            }
            if (exp.getMoneda()){
                if (x.getMonedaDto() != null){
                    strCuerpo.append(x.getMonedaDto().getDescripcion()).append("|");
                }
                else {
                    strCuerpo.append("-").append("|");
                }
            }
            if (exp.getDocumentoCompra()){
                if (x.getDocumentoCompraDto() != null){
                    strCuerpo.append(x.getDocumentoCompraDto().getId()).append("|");
                }
                else {
                    strCuerpo.append("-").append("|");
                }
            }
            if (exp.getOrden()){
                strCuerpo.append(x.getOrden()).append("|");                
            }
            if (exp.getComprobanteCompra()){
                if (x.getComprobanteCompraDto() != null){
                    strCuerpo.append(x.getComprobanteCompraDto().getId()).append("|");
                }
                else {
                    strCuerpo.append("-").append("|");
                }
            }
            if (exp.getUsuarioCancelacion()){
                if (x.getUsuarioCancelacionDto() != null){
                    strCuerpo.append(x.getUsuarioCancelacionDto().getDescripcion()).append("|");
                }
                else {
                    strCuerpo.append("-").append("|");
                }
            }
            if (exp.getFechaCancelacion()){
                if (x.getFechaCancelacion() != null){
                    strCuerpo.append(x.getFechaCancelacion()).append("|");
                }
                else {
                    strCuerpo.append("-").append("|");
                }
            }
            if (exp.getEstado()){
                if (x.getEstado() != null){
                    strCuerpo.append(x.getEstadoTexto()).append("|");
                }
                else {
                    strCuerpo.append("-").append("|");
                }
            }
            if (exp.getTipoDocumento()){
                if (x.getTipoDocumento() != null){
                    strCuerpo.append(x.getTipoDocumentoTexto()).append("|");
                }
                else {
                    strCuerpo.append("-").append("|");
                }
            }
            if (exp.getOrganizacion()){
                if (x.getOrganizacionDto() != null){
                    strCuerpo.append(x.getOrganizacionDto().getDescripcion()).append("|");
                }
                else {
                    strCuerpo.append("-").append("|");
                }
            }
            if (exp.getUsuarioCreacion()){
                if (x.getUsuarioCreacionDto() != null){
                    strCuerpo.append(x.getUsuarioCreacionDto().getDescripcion()).append("|");
                }
                else {
                    strCuerpo.append("-").append("|");
                }
            }
            if (exp.getFechaCreacion()){
                if (x.getFechaCreacion() != null){
                    strCuerpo.append(x.getFechaCreacion()).append("|");
                }
                else {
                    strCuerpo.append("-").append("|");
                }
            }
            if (exp.getTerminalCreacion()){
                if (x.getTerminalCreacion() != null){
                    strCuerpo.append(x.getTerminalCreacion()).append("|");
                }
                else {
                    strCuerpo.append("-").append("|");
                }
            }
            if (exp.getComentario()){
                if (x.getComentario() != null){
                    strCuerpo.append(x.getComentario()).append("|");
                }
                else {
                    strCuerpo.append("-").append("|");
                }
            }
            lstFilas.add(strCuerpo.toString());
        }
        return lstFilas;
    }
    
    private StringBuilder obtenerCabeceraExcel(ExportarExcelCaja.PlanPago exp) {
        StringBuilder strCabecera = new StringBuilder();
        if (exp.getId()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("general.label.id")).append("|");
        }
        if (exp.getFechaVencimiento()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("plan.pago.fecha.vencimiento")).append("|");
        }
        if (exp.getFormaPago()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("plan.pago.forma.pago")).append("|");
        }
        if (exp.getaLiquidar()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("plan.pago.a.liquidar")).append("|");
        }
        if (exp.getPagado()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("plan.pago.pagado")).append("|");
        }
        if (exp.getPendiente()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("plan.pago.pendiente")).append("|");
        }
        if (exp.getUltimoPago()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("plan.pago.ultimo.pago")).append("|");
        }
        if (exp.getNumeroPago()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("plan.pago.numero.pagos")).append("|");
        }
        if (exp.getMoneda()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("plan.pago.moneda")).append("|");
        }
        if (exp.getDocumentoCompra()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("plan.pago.documento.compra")).append("|");
        }
        if (exp.getOrden()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("plan.pago.orden")).append("|");
        }
        if (exp.getComprobanteCompra()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("plan.pago.comprobante.compra")).append("|");
        }
        if (exp.getUsuarioCancelacion()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("plan.pago.usuario.cancelacion")).append("|");
        }
        if (exp.getFechaCancelacion()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("plan.pago.fecha.cancelacion")).append("|");
        }
        if (exp.getEstado()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("general.label.estado")).append("|");
        }
        if (exp.getTipoDocumento()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("plan.pago.tipo.documento")).append("|");
        }
        if (exp.getOrganizacion()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("plan.pago.organizacion")).append("|");
        }
        if (exp.getUsuarioCreacion()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("plan.pago.usuario.creacion")).append("|");
        }
        if (exp.getFechaCreacion()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("plan.pago.fecha.creacion")).append("|");
        }
        if (exp.getTerminalCreacion()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("plan.pago.terminal.creacion")).append("|");
        }
        if (exp.getComentario()) {
            strCabecera.append(UtilCore.Internacionalizacion.getMensajeInternacional("plan.pago.comentario")).append("|");
        }
        
        return strCabecera;
    }
    
    public ExportarExcelCaja.PlanPago onChangeChekExcel(Boolean flag) {
        return new ExportarExcelCaja.PlanPago(flag);
    }
    
    public void nuevoMuchos(List<PlanPagoDto> lista) throws DAOException {
        springHibernateDao.guardarColeccion(lista);
    }
    
    public void eliminarMuchos(List<PlanPagoDto> lista) throws DAOException {
        springHibernateDao.borrarColeccion(lista);
    }
    
    public static Logger getLogger() {
        return logger;
    }
    
    public static void setLogger(Logger logger) {
        PlanPagoManager.logger = logger;
    }
    
    public Long getIdEntidad() {
        return idEntidad;
    }
    
    public void setIdEntidad(Long idEntidad) {
        this.idEntidad = idEntidad;
    }
    
    public DAOGenerico<PlanPagoDto> getSpringHibernateDao() {
        return springHibernateDao;
    }
    
    public void setSpringHibernateDao(DAOGenerico<PlanPagoDto> springHibernateDao) {
        this.springHibernateDao = springHibernateDao;
    }
    
    public RecursosManager getRecursosManager() {
        return recursosManager;
    }
    
    public void setRecursosManager(RecursosManager recursosManager) {
        this.recursosManager = recursosManager;
    }

    public String getUrl() {
        return url;
    }

    public String getUrlLista() {
        return urlLista;
    }
}
